﻿using System;
using System.Collections.Generic;
using System.Text;

namespace PCR.Base
{
    /// <summary>
    /// Vitrus Type define type
    /// </summary>
    public enum VirusDefineType
    {
        HIGHDANGER,
        LOWDANGER
    }

    /// <summary>
    /// Virus type interface
    /// </summary>
    public interface IVirusType : IGuidObject
    {
        /// <summary>
        /// Get or set the virus type name
        /// </summary>
        string Name { get; set; }
        
        /// <summary>
        /// Get or set the virus type expansion coefficient
        /// </summary>
        double EVal { get; set; }

        /// Virus exponent calculation parameter 
        /// 感染单位= 10^(K*CT + B)
        /// <summary>
        /// Get or set the virus calculation K parameter
        /// </summary>
        double KVal { get; set;}
        
        /// <summary>
        /// Get or set the virus calculation B parameter
        /// </summary>
        double BVal { get; set; }

        /// <summary>
        /// Get or set the virus define type
        /// </summary>
        VirusDefineType VirusDefineType { get; set; }
    }
    
    /// <summary>
    /// Virus type manager interface, contains all the operations of the virus type
    /// </summary>
    public interface IVirusTypeManager : IObjectRepository<IVirusType>
    {
        /// <summary>
        /// Get or set the base cell count, all the virus CT calculation
        /// will base on this same value
        /// </summary>
        UInt32 BaseCellCount { get; set; }

        /// <summary>
        /// Get or set the virus valve value
        /// if the virus Exponent > VirusSafetyExponent, it will be "阳性"
        /// else it will be "阴性"
        /// </summary>
        double VirusSafetyExponent { get; set;}
    }
}
